using System;
using System.Collections.Generic;
using System.Globalization;
using SubSonic;

namespace Medianamik.Core.DAL.Repositories
{
    public interface IRepositoryWithDefaultFilters<T> : INodeRepository
        where T : IMedianamikDTO
    {
       PagedCollection<T> PagedWithFilters(CultureInfo editionCulture, int pageIndex, int pageSize,
          ActiveStatus contentStatus, Guid? baseTypeId, Guid? moduleNodeId, DateTime? startDate,
           DateTime? endDate, string keywords, string orderBy, 
           IEnumerable<Where> additionalWheres, bool withTypeInheritance);

       PagedCollection<T> PagedWithFilters(bool multiLingual, CultureInfo editionCulture, int pageIndex, int pageSize,
         ActiveStatus contentStatus, Guid? baseTypeId, Guid? moduleNodeId, DateTime? startDate,
          DateTime? endDate, string keywords, string orderBy,
          IEnumerable<Where> additionalWheres, bool withTypeInheritance);

       PagedCollection<T> PagedWithFilters(CultureInfo editionCulture, int pageIndex, int pageSize,
               Guid baseTypeId, Guid moduleNodeId, IEnumerable<Where> additionalWheres);
    }

    //public interface IBasicRepository<T>  
    //    where T :IMedianamikDTO
    //{
    //    PagedCollection<T> PagedWithFilters(CultureInfo editionCulture, int pageIndex, int pageSize,
    //            Guid baseTypeId, Guid moduleNodeId, IEnumerable<Where> additionalWheres);
    //    void SetActiveStatus(Guid id, CultureInfo culture, ActiveStatus status);
    //    void Reorder(Guid id, Guid destinationId, DropPosition dropPosition);
    //}
}